package algoritmos;
import logica.*;
import java.util.*;
/**
**********************************************************************************************<br/>
 * Realiza subgrafos desde los vertices objetivos y calcula los costos minimos desde todos <br/>
 * Finalmente une todas las soluciones y retorna el grafo
* @author Jefferson Amado Pe&ntilde;a Torres
* @author Cristian H. Alzate
 * @see logica.dijkstraMejorado
**********************************************************************************************
* @version 1.00 2010/11/10
*/
public class AlgoritmoIngenuo implements Algoritmos {
    
    private int[][] entrada;
    private int[][] respuesta;
    private int[] objetivos;

    public AlgoritmoIngenuo(int[][] entrada, int[] objetivos){
        this.entrada=entrada;
        this.objetivos=objetivos;
    }
    public void crearSolucion() {
        //adecua los objetivos
        for(int i=0;i<objetivos.length;i++){
            objetivos[i]=objetivos[i]-1;
            //System.out.print("Adecua: "+objetivos[i]+"\n");
        }

        dijkstraMejorado dijkstra= new dijkstraMejorado(entrada,objetivos);

        ArrayList<int[][]> resultado = new ArrayList<int[][]>(objetivos.length);

        for(int i=0;i<objetivos.length;i++){

            //System.out.println("pivote es "+objetivos[i]);

            dijkstra.calcular(objetivos[i]);
            resultado.add(dijkstra.crearMatriz());
            dijkstra.limpiar();
         //   System.out.println("\n-------------");
       }

        Matriz s = new Matriz();
        this.respuesta = s.combinar(resultado);

    }
    public int[][] getSolucion(){
      return this.respuesta;
    }
}
//Jefferson Amado Peña Torres
//Cristian H. Alzate